/**
 * Generali Solutions d'assurances - Tous droits reserves &copy; 2007 - 2010
 */
package fr.generali.accueilclient.client.assembler.input;

import java.util.ArrayList;
import java.util.List;

import org.springframework.core.convert.converter.Converter;

import fr.generali.accueilclient.client.om.IIndicateursDemat;
import fr.generali.accueilclient.utils.constantes.CodeTypeActeEnum;
import fr.generali.accueilclient.utils.constantes.FiliereDematEnum;
import fr.generali.refservcommuns.rce.demat.servperscom.pty.personnes.DtoIndicateurDematerialisation;

/**
 * The Class IndicateursDemat2DtoIndicateurDematConverter.
 * 
 * @author Holmes Kelly
 */
public class IndicateursDemat2DtoIndicateurDematConverter implements
                Converter<IIndicateursDemat, List<DtoIndicateurDematerialisation>> {

    /**
     * {@inheritDoc}
     */
    @Override
    public List<DtoIndicateurDematerialisation> convert(IIndicateursDemat source) {

        List<DtoIndicateurDematerialisation> listeDtoIndDemat = null;

        if (source != null) {

            listeDtoIndDemat = new ArrayList<DtoIndicateurDematerialisation>(0);

            createIndicateursDematRenseigne(FiliereDematEnum.CODE_DEMAT_FINANCE.getCode(), listeDtoIndDemat,
                            source.isFinancierOk());

            createIndicateursDematRenseigne(FiliereDematEnum.CODE_DEMAT_IARD.getCode(), listeDtoIndDemat,
                            source.isIardOk());

            createIndicateursDematRenseigne(FiliereDematEnum.CODE_DEMAT_PREVOYANCE_SANTE.getCode(), listeDtoIndDemat,
                            source.isPrevoyanceOk());

            createIndicateursDematRenseigne(FiliereDematEnum.CODE_DEMAT_SANTE_INDIVIDUELLE.getCode(), listeDtoIndDemat,
                            source.isSanteIndividuelOk());

        }

        return listeDtoIndDemat;
    }

    /**
     * Creates the indicateurs demat.
     * 
     * @param codeDemat the code demat
     */
    private void createIndicateursDematRenseigne(String codeDemat,
                    List<DtoIndicateurDematerialisation> listeDtoIndicateurDematerialisations,
                    boolean acteIndicateurDemat) {

        if (acteIndicateurDemat) {
            DtoIndicateurDematerialisation dtoIndicateurDematerialisation = new DtoIndicateurDematerialisation();
            dtoIndicateurDematerialisation.setCodeNatureDematerialisation(codeDemat);
            dtoIndicateurDematerialisation.setCodeTypeActe(CodeTypeActeEnum.CODE_TYPE_ACTE_O.getCode());
            listeDtoIndicateurDematerialisations.add(dtoIndicateurDematerialisation);
        } else {
            DtoIndicateurDematerialisation dtoIndicateurDematerialisation = new DtoIndicateurDematerialisation();
            dtoIndicateurDematerialisation.setCodeNatureDematerialisation(codeDemat);
            dtoIndicateurDematerialisation.setCodeTypeActe(CodeTypeActeEnum.CODE_TYPE_ACTE_N.getCode());
            listeDtoIndicateurDematerialisations.add(dtoIndicateurDematerialisation);
        }

    }

}
